时间最优功能介绍
修订日期 | 修订版本 | 修订内容 | 修订人 |
---|---|---|---|
2025.05.12 | V0.1 | 初始化文档 | 邓誉鑫 |
[TOC]
1. 时间最优功能简介
在机器人轨迹规划中,时间最优功能通过同步考虑运动学约束(速度/加速度)和动力学约束(关节力矩),实现运动时间的最小化。该功能特别适用于对节拍要求严苛的场景(如高速码垛、流水线分拣),可使机械臂在安全范围内以物理极限性能执行运动。
2. 用法介绍
struct MoveProperty
{
bool time_optimal{false}; // 时间最优标志,开启后会使参考轨迹同时满足运动学和动力学约束
std::vector<double> maxV; // 最大运动速度
std::vector<double> maxA; // 最大运动加速度
使用时间最优功能需要显式设置运动属性中的 time_optimal = true ,时间最优功能开启后,能够满足速度,加速度以及力矩限制之中的任意一种约束,比如设置加速度和力矩很大,速度很小,则受限于速度约束;设置速度和力矩很大,加速度很小,则受限于加速度约束,会满足三者中任意一个的最大值来执行动作
自动适配加速度:当用户将maxV
和maxA
设置得很大,系统会受限于电机的最大扭矩,从而自动调整加速度和速度,以达到时间最优。
参数类型 | 设置策略 | 示例值(6轴机器人) |
---|---|---|
maxV | 设置值 >= 理论最大极限值(当期望系统自动适配时) | [6.0, 6.0, 6.0, 6.0, 6.0, 6.0] |
maxA | 设置值 >= 理论最大极限值(当期望系统自动适配时) | [50.0, 50.0, 50.0, 50.0, 50.0, 50.0] |
3.使用示例
Setup("aubo_i5");
std::vector<interface::RLJntArray> joints = { {0.406,-0.148,1.957,0.535,1.570,0.313}, {0.695,-0.258,1.094,0.244,1.567,-0.223} };
initiatePlanner(robot, joints[0], t_w);
interface::PathProperty path_property;
interface::MoveProperty mAttr;
path_property.describe_space = interface::DescribeSpace::JOINT;
path_property.cur_prop.type = interface::CurveType::LINE;
interface::PathPoint point = generatePathPoint(interface::DescribeSpace::JOINT, 1, joints[1], {}, t_w);
mAttr.time_optimal = true; // 开启时间最优标志
mAttr.maxV = {10.0, 10.0, 10.0, 10.0, 10.0, 10.0}; // 设置较大的关节速度限制
mAttr.maxA = {50.0, 50.0, 50.0, 50.0, 50.0, 50.0}; // 设置较大的关节加速度限制
robot->tpAddPositionLine(point, path_property, mAttr); // 添加moveJoint
注意事项
- 时间最优功能适用于确定路径的场景,如码垛,分拣等,开启时间最优功能会默认关闭动态交融,摆动以及moveP等功能